package com.brokendust.client.task;

import com.brokendust.client.PixelEngine;
import com.brokendust.client.api.module.image.ImageShow;
import com.brokendust.client.api.module.item.ItemShow;
import com.brokendust.client.api.module.text.TextLabel;
import com.brokendust.client.config.hub.HubJson;
import com.brokendust.client.config.module.image.ImageShowJson;
import com.brokendust.client.config.module.item.ItemShowJson;
import com.brokendust.client.config.module.text.TextLabelJson;
import com.brokendust.client.manager.ClientManager;

public class HubTask {
    public static void hideHub(String message) {
        if (!ClientManager.open) {
            return;
        }
        HubJson hubJson = HubJson.readJSON(message);
        for (String type : hubJson.getObject_list().keySet()) {
            ClientManager.imageShowMap.remove(type);
            ClientManager.textLabelMap.remove(type);
            ClientManager.itemShowMap.remove(type);
        }
    }

    public static void showHub(String message) {
        PixelEngine.sendLogger(message);
        if (!ClientManager.open) {
            return;
        }
        HubJson hubJson = HubJson.readJSON(message);
        for (String type : hubJson.getObject_list().keySet()) {
            String value = hubJson.getObject_list().get(type);
            if (type.startsWith("Image")) {
                ImageShowJson imageShowJson = ImageShowJson.readJSON(value);
                imageShowJson.refreshSize();
                ImageShow imageShow = new ImageShow(imageShowJson);
                ClientManager.imageShowMap.put(type, imageShow);
            } else if (type.startsWith("Text")) {
                TextLabelJson textLabelJson = TextLabelJson.readJSON(value);
                TextLabel textLabel = new TextLabel(textLabelJson);
                ClientManager.textLabelMap.put(type, textLabel);
            } else {
                if (!type.startsWith("Item")) {
                    continue;
                }
                ItemShowJson itemShowJson = ItemShowJson.readJSON(value);
                ItemShow itemShow = new ItemShow(itemShowJson);
                ClientManager.itemShowMap.put(type, itemShow);
            }
        }
    }
}
